Databases 是相關訊息的集合, 類似於 JSON, 但更表格化些。
那麼你有想到哪些 data 範例可以儲存在 database 中呢?
Database (資料庫) 為我們構建、處理和檢索大型資料集的方式做了很大的改進。 大多數軟體公司都會有一個專門從事資料庫管理的大型團隊。
Database 的優勢:
功能強大
: 可以搜索、過濾資料、合併來自多個資源的資料。快速
: 與 file/JSON 相比, 可以非常快速地搜尋以及過濾資料庫。大
: 可以很合適地把資料庫大小擴展到非常大。安全
: 用於操作失敗 (failure) 後恢復 (recovery) 的內建機制多用戶
: Concurrency (並發性) 允許讓許多使用者同時查看/編輯資料。抽象 (abstract)
: 在儲存的資料和應用程式之間提供抽象層 —— 許多資料庫 program 都可以理解相同的 commands。將資料結構化為與共享屬性 (shared attributes) 有關聯的表格 (table)。
更詳細的解釋:
關係式資料庫是一種資料庫,用於儲存並存取相關的資料點。關聯式資料庫的基礎建立於關聯模型之上,以直接且直覺的方式於資料表上顯示資料。在關係式資料庫中,資料表中的每一列資料行都是一條記錄,並有唯一的ID,稱為索引鍵。資料表的資料列中存放著資料的屬性,每條記錄通常有一個屬性值,這樣就很容易建立資料點之間的關係。
參考資料: https://www.oracle.com/tw/database/what-is-a-relational-database/
從上圖 Excel 範例來看:
其實表格 (Tables) 可以做到像 Excel 工作表一樣呈現資料可視覺化, 只是具有不同的術語和更多的程序化功能。
表格範例:
搜索/更新
資料庫的語言。專為資料訪問
和資料管理
而設計的特定領域語言(Domain-Specific Language)
, 而 HTML 其實也是一種 DSL。宣告式語言 (Declarative Language)
: 表達你要查找的資料, 而不是確切的查找方法。
statements
in SQL!資料是什麼樣的
?更改或訪問資料
[CREATE TABLE](https://www.w3schools.com/sql/sql_create_table.asp)
用於創建新表格。
CREATE TABLE table_name(
column1 datatype PRIMARY KEY,
column2 datatype,
column3 datatype,
.....
columnN datatype
);
.sql File Example:
-- comment in sqlite
CREATE TABLE Games(
id INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(106),
platform VARCHAR(32) NOT NULL,
release_year INTEGER NOT NULL,
genre VARCHAR(28),
publisher VARCHAR(50) NOT NULL,
developer VARCHAR(50),
rating VARCHAR(50)
);
SQL Type convert to SQLite Type
Static SQL Type | SQLite Type |
---|---|
INT | INTEGER |
VARCHAR(n) | TEXT |
TINYINT | INTEGER |
DATETIME | NUMERIC (包含: “Strings”, Dates, Booleans) |
DOUBLE | REAL |
TEXT | TEXT |
以下這些稱為 Constraints
- 它們有條件地約束
你可以在欄位中存入的值的類型。
SQLite AUTOINCREMENT is a keyword used for auto incrementing a value of a field in the table.
這邊提供兩個不錯的 Constraints 學習連結:
先下載完 DB Browser for SQLite 後, 我們可以新建一個資料庫檔案。
點選左上角的 New Database
, 在選好資料庫檔案儲存路徑後, 為檔案命名完成。
建立完成後, 會跳出一個 Edit table definition
視窗, 我們可以在這邊新建 table (資料表)。定義完 table 名稱後, 點選下方的Add
允許我們增加資料表欄位。馬上來新增兩個欄位看看,
要將新 record 存入表中, 我們使用 INSERT INTO
關鍵字。
INSERT INTO Games(id,name,platform,release_year,genre,publisher,developer,rating)
VALUES (1,'Pokemon Red/Blue','GB','1996','Role-Playing','Nintendo','Game Frea k','E');
首先提供 table name, 然後提供要設置的列表(預設情況下它會設置所有欄位)。 遺漏的欄位將設置為 NULL, 除非它們設置了 AUTOINCREMENT。然後為每列欄位提供與指定的欄位名匹配的值。
在新建好的 table 點擊右鍵中的 Browse Table
可以瀏覽資料表的資訊
進來可以看到 table, 想要存入資料的話, 點選 GUI 中的 Insert a new record in the current table
, 便可新增欄位。點選目標欄位, 並且在右邊的 Edit Databse Cell
中編輯想要存入的 data, 最後點選 Appply
。
相反的, 如果想要刪除某個欄位, 選取想要刪除的欄位並點選 GUI 中的 Delete the current record
。